1. Field of the Invention
This invention relates to systems and methods for developing and debugging multidimensional queries or request instructions on a multidimensional database, and providing a front end user interface to such multidimensional queries on a multidimensional database implemented on an electronic processor unit or computational hardware, in order to better understand, troubleshoot and build on these multidimensional queries as well as the multidimensional database. More particularly, this invention relates to systems and methods implemented on an electronic processing unit in facilitating the display to a user of multidimensional queries and data in a number of different user-friendly, human-understandable formats to improve the end user's comprehension of very complex and exhaustive data and relationships, in a such a way as to first understand small segments or increments of query execution, allowing the user to correct errors in execution, tune queries and produce desired results.
2. Description of the Related Art
Several patents presently deal with structures and architectures for storing multidimensional databases. A few even approach debugging the state of a multidimensional database during execution. Several of these patents and applications are disclosed and incorporated as references herein. However, no present applications or disclosures deal with the actual run-time interactive debugging of segments or parts of the actual multidimensional queries. Thus, there remains an acute need in the field for systems allowing the end-user, even at a novice level to be able to view and troubleshoot execution at the atomic level, in an easily understandable format.
Multidimensional queries are presently the new paradigm used in complex computations applied to several real-world problems from banking to geographic and medical imaging, as well as to modeling and simulation. A multidimensional database is typically organized, optimized and structured in a way to allow/speed-up queries against OLAP cubes; with their dimensions, levels, and hierarchies, these are exemplary of multidimensional database “structures”. Dimensions, hierarchies and levels define MDX and multidimensional query languages in a similar way to which tables and columns are central to SQL or relational database languages. They serve to map business models into language-specific concepts (e.g. a list of countries may be mapped as a single dimension in MDX). Multidimensional query result sets may be quite complex, each possibly spanning 10 pages or more. With the presently available tools, it is either exhaustive, or sometimes entirely impossible, for an end user or developer to test his or her query on a dataset and to understand how a particular result was generated, since it is likely to be the net result of several important intermediate operations, none of which is directly related to the result. The user would need to then go back and manually decompose a query into smaller parts, running each one separately; this process is not only unreliable and error prone but also extremely time-consuming. For the most complicated requests, such a practice might not even be possible due to the very nature of multidimensional query languages, and the difficulty of even visualizing inputs and results beyond three dimensions, let alone working through them. A system is thus required to work through these nodes of complexity where multiple dimensions are present in both the query and the resultant set. Erroneous or misleading outputs require users to backtrack and work through various layers of a query, requiring a snapshot of each execution node and indeed each intermediate execution step. Thus function calls, expected and actual results, must be traced and compared, so the user can backtrack, manipulate or correct the query, or even the input data set.
Debuggers have become commonplace in computer technology and software development, so that errors in execution may be traced, or input values can be modified to yield correct/expected results. However, over the last years, computing complexity has greatly increased and a need has developed for a method to debug multidimensional, multi-level computing problems with simplicity and ease, without simultaneously creating an information overload and hence confusion for the user. The need has also arisen to be able to simultaneously trace resultant values at various stages or nodes of execution, for example in parallel processing and computation.